import java.util.ArrayList;
import java.util.List;

public class Test1 {

    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ret = new ArrayList<>();
        List<Integer> list0 = new ArrayList<>();
        list0.add(1);
        ret.add(list0);
        for (int i = 1; i < numRows; i++) {
            //第一步：第一列为1
            List<Integer> list1 = new ArrayList<>();
            list1.add(1);
            //第二部：计算中间列的数字
            List<Integer> prev = ret.get(i-1);
            for (int j = 1; j < i; j++) {
                list1.add(prev.get(j) + prev.get(j -1));
            }
            //第三步最后一列为1
            list1.add(1);
            ret.add(list1);
        }
        return ret;
    }

    public List<List<Integer>> generate1(int numRows) {
        List<List<Integer>> ret = new ArrayList<>();
        List<Integer> list0 = new ArrayList<>();
        list0.add(1);
        ret.add(list0);
        for (int i = 1; i < ret.size(); i++) {
            //第一步：第一列为1
            List<Integer> list1 = new ArrayList<>();
            list1.add(1);
            //第二部：计算中间列的数字
            List<Integer> prev = new ArrayList<>(i - 1);
            for (int j = 1; j < numRows; j++) {
                list1.add(prev.get(j) + prev.get(j + 1));
            }
            //第三步最后一列为1
            list1.add(1);
            ret.add(list1);
        }
        return ret;
    }

    public static void main(String[] args) {

    }
}
